<html>
    <head>
        <meta charset="utf-8">
        <title>JPG2ASCII开发上线记录</title>
        <link rel="stylesheet" href="../assets/stylesheets/global.css">
        <link rel="stylesheet" href="../assets/stylesheets/words.css">
        <link rel="stylesheet" href="../assets/stylesheets/monokai.css">
        <link rel="stylesheet" href="../assets/stylesheets/table.css">
        <link rel="shortcut icon" href="../assets/images/favicon.ico" type="image/x-icon">
        <link rel="icon" href="../assets/images/favicon.ico" type="image/x-icon">
        <script>
            // 统计代码
            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
                (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
                m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
                })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

            ga('create', 'UA-93231524-1', 'auto');
            ga('send', 'pageview');
        </script>
    </head>
    <body>
        <div id="header">
            <a href="../index.html"><div id="logo">JG</div></a>
        </div>
        <div id="container" class="typo">
            <div id="article">
                <h1>JPG2ASCII开发上线记录</h1>
                <h4>Posted November 18, 2015</h4>

                <h2>介绍</h2>

<p>刚开始做运维的时候喜欢在登录服务器的时候自动打印一些ASCII图像， 于是大量搜寻这种图片以做到自己的欢迎页独一无二。 想想有点不误正业， 现在虽说找到合适的ASCII图形， 相对于以前不喜这个东西了， 但至少是一段时间的情怀. 最近研究flask， 碰巧又遇到jp2a这个开源软件, 所以想把图片转ASCII图像做成一个在线服务, 顺便入门flask.
<a href="jpg2ascii.herokuapp.com">JPG2ASCII</a></p>

<h3>用到的开源</h3>

<p><strong>jp2a</strong></p>

<p>进行转换的工具
项目地址:  <a href="https://csl.name/jp2a/">https://csl.name/jp2a/</a></p>
<blockquote class="blockquote-normal">
                <p>jp2a is a small utility that converts JPG images to ASCII. It&#39;s written in C and released under the GPL.</p></blockquote>
<p><strong>flask</strong></p>

<p>一个Python web框架
项目地址: <a href="https://github.com/mitsuhiko/flask">https://github.com/mitsuhiko/flask</a></p>
<blockquote class="blockquote-normal">
                <p>A microframework based on Werkzeug, Jinja2 and good intentions http://flask.pocoo.org/</p></blockquote>
<p><strong>semantic-UI</strong></p>

<p>一个前端开发框架
项目地址: <a href="https://github.com/semantic-org/semantic-ui/">https://github.com/semantic-org/semantic-ui/</a></p>
<blockquote class="blockquote-normal">
                <p>Semantic is a development framework that helps create beautiful, responsive layouts using human-friendly HTML.</p></blockquote>
<h2>主要思路</h2>

<p>前端网页UI将图片和参数传递到后端flask, 然后保存图片生成ASCII最后返回生成结果.项目已经开源， 这里不贴代码了， 有兴趣移步到<a href="https://github.com/jackeyGao/Flask-JPG2ASCII">https://github.com/jackeyGao/Flask-JPG2ASCII</a></p>

<h2>最后部署heroku</h2>

<p><code>Heroku</code>是一个支持多种编程语言的云平台即服务</p>

<p>Python 的web程序指定好<code>Procfile</code> 和 <code>requirements.txt</code> 就可以正常工作了， 但是由于此次项目用到了jp2a这个需要编译的工具, 现在就有个问题. 现在本地的jp2a可执行文件是不能在heroku机器上运行成功的, 所以我怎么在heroku上编译这个工具。 幸运的是heroku支持的， 官方的<code>快速开始</code>文档没有关于这个的介绍, 我在国外的一个博客看到有个伙计成功了. 下面介绍</p>

<p>首先需要获得一个shell命令行交互环境.其次需要把包放到heroku APP机器上, 这个可以scp, 或者wget, curl. 
获得shell(其实相当于ssh操作这台机器)， 使用heroku的run命令</p>
<div class="code-wrapper"><span class="lang-label">Bash</span><div class="highlight"><pre><span></span>heroku run /bin/bash
</pre></div>
</div>
<p>然后就会有一个shell环境来操作app机器, 这时候</p>
<div class="code-wrapper"><span class="lang-label">Bash</span><div class="highlight"><pre><span></span>curl -O http://sourceforge.net/projects/jp2a/files/latest/download

tar zxvf download
<span class="nb">cd</span> jp2a-xxxxx/
./configure --prefix<span class="o">=</span>/app/.heroku/vendor/jp2a
make <span class="o">&amp;&amp;</span> make install
</pre></div>
</div>
<p>编译完成后需要把这个jp2a可执行命令打进包里面, heroku app机器上不太方便git操作, 我这边是在heroku app机器scp到我的服务器上. 然后add commit.</p>

            </div>
            <div id="footer">
                <a href="../words.html"><div id="more-words">MORE WORDS</div></a>
            </div>
        </div>
    </body>
</html>